package com.ls.socketio.controller;

import com.ls.socketio.bean.*;
import com.ls.socketio.service.SendService;
import com.ls.socketio.view.InfoView;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author liShan
 * @date 2019/9/4 23:14
 */
@RestController
@RequestMapping("/send")
public class SendController {

    @Resource
    private SendService sendService;

    /**
     * 解锁
     * @param command 命令参数
     * @return 执行结果
     */
    @PostMapping("/uncheck")
    public InfoView uncheck(@RequestBody UncheckCommand command) {
        return sendService.execute(command, UncheckCommand.class);
    }

    /**
     * SOS 和退房处理及房态下载
     * @param command 命令参数
     * @return 执行结果
     */
    @PostMapping("/sos")
    public InfoView sos(@RequestBody SosCommand command){
        return sendService.execute(command, SosCommand.class);
    }

    /**
     * 调光回路控制
     * @param command 命令参数
     * @return 执行结果
     */
    @PostMapping("/lighting")
    public InfoView lighting(@RequestBody LightingCommand command){
        return sendService.execute(command, LightingCommand.class);
    }

    /**
     * 远程使用授权（同插卡）
     * @param command 命令参数
     * @return 执行结果
     */
    @PostMapping("/auth")
    public InfoView auth(@RequestBody AuthCommand command){
        return sendService.execute(command, AuthCommand.class);
    }

    /**
     * 空调控制
     * @param command 命令参数
     * @return 执行结果
     */
    @PostMapping("/air")
    public InfoView air(@RequestBody AirCommand command){
        return sendService.execute(command, AirCommand.class);
    }

    /**
     * 空调控制
     * @param command 命令参数
     * @return 执行结果
     */
    @PostMapping("/infraRed")
    public InfoView infraRed(@RequestBody InfraRedCommand command){
        return sendService.execute(command, InfraRedCommand.class);
    }

    /**
     * 开关回路控制
     * @param command 命令参数
     * @return 执行结果
     */
    @PostMapping("/switchContr")
    public InfoView switchContr(@RequestBody SwitchCommand command){
        return sendService.execute(command, SwitchCommand.class);
    }

}
